diff --git a/django/contrib/admin/utils.py b/django/contrib/admin/utils.py
index 5e6a400b6c..483fbd718d 100644
--- a/django/contrib/admin/utils.py
+++ b/django/contrib/admin/utils.py
@@ -348,54 +348,19 @@ def label_for_field(name, model, model_admin=None, return_attr=False, form=None)
     attr = None
     try:
         field = _get_non_gfk_field(model._meta, name)
-        try:
-            label = field.verbose_name
-        except AttributeError:
-            # field is likely a ForeignObjectRel
-            label = field.related_model._meta.verbose_name
     except FieldDoesNotExist:
-        if name == "__str__":
-            label = str(model._meta.verbose_name)
-            attr = str
-        else:
-            if callable(name):
-                attr = name
-            elif hasattr(model_admin, name):
-                attr = getattr(model_admin, name)
-            elif hasattr(model, name):
-                attr = getattr(model, name)
-            elif form and name in form.fields:
-                attr = form.fields[name]
-            else:
-                message = "Unable to lookup '%s' on %s" % (
-                    name,
-                    model._meta.object_name,
-                )
-                if model_admin:
-                    message += " or %s" % model_admin.__class__.__name__
-                if form:
-                    message += " or %s" % form.__class__.__name__
-                raise AttributeError(message)
-
-            if hasattr(attr, "short_description"):
-                label = attr.short_description
-            elif (
-                isinstance(attr, property)
-                and hasattr(attr, "fget")
-                and hasattr(attr.fget, "short_description")
-            ):
-                label = attr.fget.short_description
-            elif callable(attr):
-                if attr.__name__ == "<lambda>":
-                    label = "--"
-                else:
-                    label = pretty_name(attr.__name__)
-            else:
-                label = pretty_name(name)
-    except FieldIsAForeignKeyColumnName:
-        label = pretty_name(name)
-        attr = name
-
+        message = "E108: Unable to lookup '%s' on %s" % (
+            name,
+            model._meta.object_name,
+        )
+        if model_admin:
+            message += " or %s" % model_admin.__class__.__name__
+        raise AttributeError(message)
+    try:
+        label = field.verbose_name
+    except AttributeError:
+        # field is likely a ForeignObjectRel
+        label = field.related_model._meta.verbose_name
     if return_attr:
         return (label, attr)
     else:
